package tech.aistar.corejava.day11;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Created by 李雨昂 on 2019/7/29.
 */
public class ArrayListUpdateDemo {
    public static void main(String[] args) {
        //创建一个用户集合
        List<User> users = new ArrayList<>();

        //模拟一些用户数据
        User u1 = new User(1,"lya");
        User u2 = new User(2,"mhx");
        User u3 = new User(3,"shy");

        users.add(u1);
        users.add(u2);
        users.add(u3);

        //删除集合中第一次痴线的对象 - 提供了hashcode和equals,只要id一样几人位是同一个对象
        //users.remove(new User(3,"sdd"));
        //users.remove(u3);

        //根据用户的id进行删除 - 下标唯一性
        delByUserId(users,2);
        //System.out.println(users);

        //根据用户名进行删除 - 用户名不再是唯一的
        //delByUserName(users,"lya");

        //迭代器
        Iterator<User> iter = users.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }

    }


    /**
     * 增強for - 只读的
     * @param users
     * @param id
     */
    private static void delByUserId(List<User> users, int id) {
        //判断参数有效性
        if(null == users && users.size() == 0){
            return;
        }
        //增强for循环 - 只读的

        /*for (User u : users) {
            if(u.getId().equals(id)){
                System.out.println("==========");
                users.remove(u);
                //break;
            }
        }*/
        Iterator<User> its = users.iterator();
        while (its.hasNext()){
            User u = its.next();
            if(u.getId().equals(id)){
                //迭代器的删除方法
                its.remove();
                //users.remove(u);
                break;
            }
        }
    }
    private static void delByUserName(List<User> users, String name) {
        if(null == users && users.size() == 0){
            return;
        }
        for (int i = 0; i < users.size(); i++) {
            if(users.get(i).getUsername().equals(name)){
                users.remove(users.get(i));
                break;
            }
        }
    }
}
